void main() {
  R r = R(a: 100, b: 1);
  print(r.getArea());
}

//定义一个带属性初始化列表的类
class R {
  final num a;
  final num b;

  // a、b两个字段都是final的必须赋值，不能在构造体中赋值，因为在对象初始化之后才执行函数体中内容，并没有为final赋值
  // 为属性赋默认值,初始化列表，在构造方法体执行前执行
  // 通过初始化列表可以给属性在初始化列表中赋默认值,如果调用处不传则使用默认值
  R({num a, num b})
      : this.a = a ?? 12,
        this.b = b ?? 122 {
    print('a=$a,b=$b');
  }

  //编译器可以判断第一个a是this.a,右边的a为参数中的a
  R.num(int a, int b)
      : a = a,
        b = b {
    print('a=$a,b=$b');
  }

  int getArea() {
    //return this.a * this.b;
    return 0;
  }
}
